Summary: ExSec4_2_DLMMU04
(VAR N XS YS X ZS)
(STRATEGY CONTEXTSENSITIVE
(natsFrom 1)
(cons 1)
(s 1)
(fst 1)
(pair 1 2)
(snd 1)
(splitAt 1 2)
(0)
(nil)
(u 1)
(head 1)
(tail 1)
(sel 1 2)
(afterNth 1 2)
(take 1 2)
)
(RULES
natsFrom(N) -> cons(N,natsFrom(s(N)))
fst(pair(XS,YS)) -> XS
snd(pair(XS,YS)) -> YS
splitAt(0,XS) -> pair(nil,XS)
splitAt(s(N),cons(X,XS)) -> u(splitAt(N,XS),N,X,XS)
u(pair(YS,ZS),N,X,XS) -> pair(cons(X,YS),ZS)
head(cons(N,XS)) -> N
tail(cons(N,XS)) -> XS
sel(N,XS) -> head(afterNth(N,XS))
take(N,XS) -> fst(splitAt(N,XS))
afterNth(N,XS) -> snd(splitAt(N,XS))
)
obj ExSec4_2_DLMMU04 is
sort S .
op natsFrom : S -> S .
op cons : S S -> S [strat (1 0)] .
op s : S -> S .
op fst : S -> S .
op pair : S S -> S .
op snd : S -> S .
op splitAt : S S -> S .
op 0 : -> S .
op nil : -> S .
op u : S S S S -> S [strat (1 0)] .
op head : S -> S .
op tail : S -> S .
op sel : S S -> S .
op afterNth : S S -> S .
op take : S S -> S .
vars N XS YS X ZS : S .
eq natsFrom(N) = cons(N,natsFrom(s(N))) .
eq fst(pair(XS,YS)) = XS .
eq snd(pair(XS,YS)) = YS .
eq splitAt(0,XS) = pair(nil,XS) .
eq splitAt(s(N),cons(X,XS)) = u(splitAt(N,XS),N,X,XS) .
eq u(pair(YS,ZS),N,X,XS) = pair(cons(X,YS),ZS) .
eq head(cons(N,XS)) = N .
eq tail(cons(N,XS)) = XS .
eq sel(N,XS) = head(afterNth(N,XS)) .
eq take(N,XS) = fst(splitAt(N,XS)) .
eq afterNth(N,XS) = snd(splitAt(N,XS)) .
endo
Negative results
-
The µ-termination of ExSec4_2_DLMMU04 cannot be proved by
using Lucas' transformation. The TRS ExSec4_2_DLMMU04_L:
natsFrom(N) -> cons(N)
fst(pair(XS,YS)) -> XS
snd(pair(XS,YS)) -> YS
splitAt(0,XS) -> pair(nil,XS)
splitAt(s(N),cons(X)) -> u(splitAt(N,XS))
u(pair(YS,ZS)) -> pair(cons(X),ZS)
head(cons(N)) -> N
tail(cons(N)) -> XS
sel(N,XS) -> head(afterNth(N,XS))
take(N,XS) -> fst(splitAt(N,XS))
afterNth(N,XS) -> snd(splitAt(N,XS))
contains extra variables.
Positive results
-
The µ-termination of ExSec4_2_DLMMU04 can be proved by using
CSRPO
MuTerm
-
The µ-termination of ExSec4_2_DLMMU04 can be proved by using Zantema'
transformation. The TRS ExSec4_2_DLMMU04_Z:
natsFrom(N) -> cons(N,n__natsFrom(s(N)))
fst(pair(XS,YS)) -> XS
snd(pair(XS,YS)) -> YS
splitAt(0,XS) -> pair(nil,XS)
splitAt(s(N),cons(X,XS)) -> u(splitAt(N,activate(XS)),N,X,activate(XS))
u(pair(YS,ZS),N,X,XS) -> pair(cons(activate(X),YS),ZS)
head(cons(N,XS)) -> N
tail(cons(N,XS)) -> activate(XS)
sel(N,XS) -> head(afterNth(N,XS))
take(N,XS) -> fst(splitAt(N,XS))
afterNth(N,XS) -> snd(splitAt(N,XS))
natsFrom(X) -> n__natsFrom(X)
activate(n__natsFrom(X)) -> natsFrom(X)
activate(X) -> X
can be proved terminating by AProVE
-
The µ-termination of Ex5_DLMMU04 can be proved by using Ferreira and Ribeiro's transformation'
. The TRS ExSec4_2_DLMMU04_FR:
natsFrom(N) -> cons(N,n__natsFrom(n__s(N)))
fst(pair(XS,YS)) -> XS
snd(pair(XS,YS)) -> YS
splitAt(0,XS) -> pair(nil,XS)
splitAt(s(N),cons(X,XS)) -> u(splitAt(N,activate(XS)),N,X,activate(XS))
u(pair(YS,ZS),N,X,XS) -> pair(cons(activate(X),YS),ZS)
head(cons(N,XS)) -> N
tail(cons(N,XS)) -> activate(XS)
sel(N,XS) -> head(afterNth(N,XS))
take(N,XS) -> fst(splitAt(N,XS))
afterNth(N,XS) -> snd(splitAt(N,XS))
natsFrom(X) -> n__natsFrom(X)
s(X) -> n__s(X)
activate(n__natsFrom(X)) -> natsFrom(activate(X))
activate(n__s(X)) -> s(activate(X))
activate(X) -> X
can be proved terminating by AProVE